using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.CodeDom.Compiler;
using System.CodeDom;

namespace NBusiness.CodeDom.Compiler
{
    [Serializable]
    public abstract class EntityCompiler : MarshalByRefObject, IDisposable
	{
        public abstract EntityFile[] CompileRoot<T>(
            EntityRoot root,
            EntityCompileParameters parameters) where T : Attribute;

        public abstract EntityFile[] CompileEntity<T>(
            Entity entity, 
            EntityCompileParameters parameters) where T: Attribute;

        #region IDisposable Members

        public virtual void Dispose()
        {
        }

        #endregion
    }
}
